Data storage backup with lessened cache pollution

ABSTRACT

Control of the discard of data from cache during backup of the data. In a computer-implemented system comprising primary data storage; cache; backup data storage; and at least one processor, the processor is configured to identify data stored in the primary data storage for backup to the backup data storage, where the identified data is placed in the cache in the form of portions of the data, and where the portions of data are to be backed up from the cache to the backup storage. Upon backup of each portion of the identified data from the cache to the backup storage, the processor marks the backed up portion of the identified data for discard from the cache. Thus, the backed up data is discarded from the cache right away, lessening cache pollution.

FIELD OF THE INVENTION

This invention relates to data storage, and more particularly toconducting data storage backup.

BACKGROUND OF THE INVENTION

Data storage backup is mandatory in many data storage environments, andcan be intensive in terms of resource requirements. Typically, backupapplications read files/blocks only once, but at a very fast clip, whichcan cause cache pollution where the cache operates with standard discardtechniques such as an LRU (least recently used) algorithm whereas thebackup data is instead the most recently accessed. Further, when filesare backed up it is difficult to know what the next file is andunderlying prefetch algorithms tend to prefetch data based on thelocality of reference, or are designed to cater to all I/O(input/output) requests, not matching the backup application since thedata to be backed up may be dispersed randomly on the underlyingstorage.

SUMMARY OF THE INVENTION

Methods, data storage subsystems, and computer program products areprovided for controlling the discard of data from cache during backup ofthe data.

In one embodiment of a computer-implemented system comprising primarydata storage; cache; backup data storage; and at least one processor,the processor is configured to identify data stored in the primary datastorage for backup to the backup data storage, where the identified datais placed in the cache in the form of portions of the data, such asblocks, and where the portions of data are to be backed up from thecache to the backup data storage. Upon backup of each portion of theidentified data from the cache to the backup data storage, the processormarks the backed up portion of the identified data for discard from thecache.

Thus, the backed up data is discarded from the cache immediately afterfirst access, lessening cache pollution.

In a further embodiment, the marking step of the processor comprisesmarking the identified backed up portions to an accelerated LRU (leastrecently used) list.

In another embodiment, the identifying step of the processor identifiesin advance the subset of data stored in the data storage for backup.

In still another embodiment, the identifying step of the processoridentifies a complete set of files of data stored in the data storagefor the backup.

In a further embodiment, the portions of the backup and the marking stepof the processor comprise data blocks.

In a still further embodiment, the backup comprises a backup accesspattern, and the processor additionally prefetches the data blocks ofthe data storage for the backup for the caching in the order of thebackup access pattern.

In a further embodiment, the identifying step of the processoradditionally comprises generating a list of physical READS of the datastored in the data storage for the prefetching step and for the markingstep.

For a fuller understanding of the present invention, reference should bemade to the following detailed description taken in conjunction with theaccompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an exemplary computer-based storagearchitecture with a storage system and a backup storage system which mayimplement the present invention;

FIG. 2 is a diagrammatic illustration of various actions and states ofthe storage system and backup storage of FIG. 1; and

FIG. 3 is a diagrammatic illustration of a file system of FIG. 1 to bebacked up.

DETAILED DESCRIPTION OF THE INVENTION

This invention is described in preferred embodiments in the followingdescription with reference to the Figures, in which like numbersrepresent the same or similar elements. While this invention isdescribed in terms of the best mode for achieving this invention'sobjectives, it will be appreciated by those skilled in the art thatvariations may be accomplished in view of these teachings withoutdeviating from the spirit or scope of the invention.

Referring to FIG. 1, an example of computer-based storage systemarchitecture 100 is illustrated. The architectural arrangement comprisesone of many which may implement the present invention. The systemarchitecture 100 is presented only by way of example and is not intendedto be limiting. The computer-implemented data storage system and methodsdisclosed herein may be applicable to a wide variety of differentcomputers, servers, data storage systems, and storage architectures.

The exemplary storage system architecture 100 may comprise one or morehost computer systems 102 coupled to one or more networks, such as astorage area network (SAN) 108, in turn coupled to a primary storagesystem 110 and backup data storage 310. The network 108 may comprise anysuitable private or public interconnection using any suitable protocol.The primary storage system 110 comprises a storage control 200configured to transfer data to and from and to control the operation ofswitches 202 and data storage 203 and 204. The data storage maycomprise, for example, arrays of solid-state drives and hard disk drivesaccessible via switches 202. Alternatively or additionally, the datastorage 203 and 204 may comprise individual devices or may comprise datastorage libraries with many devices. All or any of the host systems 102may direct and utilize the primary storage system 110 and utilize thestorage control 200 and any data caching system therein.

The backup storage system 310 may comprise a storage system similar tothat of primary storage system 110 or may comprise a different type ofstorage system such as a tape system.

As shown, the storage control 200 comprises one or more servers 206 a,206 b. Each control 200 may also comprise host adapters 208 and deviceadapters 210 to provide the interfaces to connect the control 200 tohost systems 102 and data storage 203 and 204, respectively. Multipleservers 206 a, 206 b may provide redundancy to ensure that data isalways available to connected hosts 102. Thus, in storage system 110,should one server 206 a fail, the other server 206 b may remainfunctional to ensure that data transfer is able to continue between thehost systems 102 and the data storage 203 and 204. This process may bereferred to as “failover”.

One example of a storage system 110 having an architecture similar tothat illustrated in FIG. 1 is the DS8000™ Enterprise Storage Server ofInternational Business Machines Corp. (IBM®). The DS8000™ is a highperformance, high capacity storage control providing data storage thatis designed to support continuous operations and implementvirtualization of data storage, and is presented herein only by way ofembodiment examples and is not intended to be limiting. Thus, thestorage systems 110, 310 discussed herein are not limited to theDS8000™, but may be implemented in any comparable storage system,regardless of the manufacturer, product name, or components or componentnames associated with the system.

In the example of FIG. 1, each storage system server 206 a, 206 b maycomprise one or more computer processors 212 and memory 214. Thecomputer processors 212 may comprise internal processing and storagecapabilities to store software modules such as application programs,that run on the processors and, inter alia, are used to access data inthe data storage 203 and 204.

The memory 214 may comprise a cache 218. Whenever a host 102 accessesdata from a storage system 110, for example in a read operation, theserver 206 a, 206 b that performs the operation, for example readingdata from storage 203 and 204 may save the data in its cache 218 in theevent it may be required again. If the data is accessed again by a host102, the server 206 a, 206 b may fetch the data from the cache 218instead of fetching it from storage 203 and 204, saving both time andresources. Similarly, when a host system 102 performs a write, theserver 206 a, 206 b may store, or host system 102 may direct that thedata be stored, in cache 218 to be destaged to the storage 203 and 204at a later time. When a write is stored in cache 218, the write may alsobe stored in non-volatile storage (NVS) 220 of the opposite server 206b, 206 a so that the write can be recovered by the opposite server 206b, 206 a in the event the first server 206 a, 206 b fails.

Referring to FIG. 1, each storage system 110, 310 may comprise both datastorage 204, such as hard disk drives, and data storage 203, such assolid state drives (SSDs) based on flash memory. The input/output (I/O)performance of SSD drives or other types of solid state memory istypically far faster than the I/O performance of hard disk drives.Alternatively, the backup storage system 310 may comprise a tape-basedstorage system with or without a tape library.

Data storage systems additionally offer the user an interface withrespect to the storage system, for example in the form of Command LineInterface (CLI) commands or with Graphical User Interface (GUI) commandsat a user interface 480. While the depicted embodiment shows the userinterface 480 residing at the storage control 200, in other embodiments,the user may interact with the storage systems via a host 102, etc.

The storage control 200 and backup data storage 310 are in communicationvia link 300. The link 300 may comprise any suitable communication link,examples of which comprise SCSI, Fiber optics, or direct.

The user, via the user interface 480 may supervise the usage of the datastorage systems. In one embodiment, in response to a user request toback up data storage at storage system from the user interface 480, abackup application of processor(s) 212 of storage control 200 conductsthe back up of data of data storage 203, 204 to the backup data storage310 via link 300, using a cache 218.

Referring to FIGS. 1 and 2, the backup application may comprise a singlecombined application or a plurality of applications that work together.In one embodiment, the base backup application 320 is accompanied by aprefetch application 330 and a cache pollution reduction application340. The applications may be resident in processor(s) 212 as individualapplications or as a single application. Alternatively, backupapplication 320 may be resident in host system 102 and the cachepollution reduction application 340 and prefetch application 330 may beresident in processor(s) 212.

Referring additionally to FIG. 3, at step 350, a backup session isscheduled for a lower usage period, such as at night, and a list offiles or blocks 360 that will be accessed by the backup application iscreated by the backup application 320. The cache pollution reductionapplication 340, or an associated application, in step 370, before thebackup starts, generates a complete list (or a subset, as long as thelist is ahead of the current set of files or blocks to be backed up) ofall the files or blocks that are to be read by the backup application320 for a given session. The application generates the list bytraversing the file tree in the same order as would be traversed by thebackup application 320. In one example, the list 360 is a complete listof files or blocks in the file system if the backup is a full backup. Inanother example, the list 360 is a list of files or blocks that havechanged since the last backup was taken if the backup is an incrementalbackup. Thus, in one embodiment, the identifying step 370 of theprocessor 212 identifies an advance subset of data stored in the datastorage for backup. In one embodiment, the identifying step of theprocessor identifies a complete set of files of data stored in the datastorage for the backup. In another embodiment, the portions of thebackup and the marking step of the processor comprise data blocks. Inthe example of FIG. 3, the file names 360 to be backed up are translatedto data blocks 380 with start logical block addresses and size in orderfor the lower levels of virtualization 390 to interpret the backup listand sequence of access.

Still in step 370, the list 360 is given to the to the file system bymeans of an API (application program interface). The file system may bea local file system of the application host 102 or processor 212 or beimported. An example of an API is

API: prefetch(list of files, fsname).

The file system in turn takes the set of files and creates the list 380that contains a list of block level READs that the file system willissue when the backup application starts. This list is sent to theunderlying storage virtualization layer 390. In the example of FIG. 3,the files to be backed up in a given session are distributed overmultiple disks, perhaps because the file system allocates free blocksaccording to its internal allocation algorithms, and each virtualizationlayer results in the list becoming longer due to the presence of RAID(redundant array of independent disks) conversion tables. As shown, file392 is distributed over disks 393 and 394. For example, the list of 4created at the file system layer gets converted to a longer list of 5because part of the file is stored on one disk of a striped volume whilethe rest is stored on a separate disk of the same striped volume. Thestorage virtualization layer 390 may also reside in other areas, such asa LAN (Local Area Network) or WAN (Wide Area Network). For example, thedata could be stored in cloud storage and be backed up to personal orless expensive cloud storage, or backed up to remote storage such asanother storage system, etc.

For example, the virtualization layer converts the block level READslist to the corresponding list of physical disk blocks that are going tobe READ by the backup application. This translation may be atstripe/mirror/RAID mappings used by the virtualization layer.

As the list percolates down the storage virtualization layers, eachlayer is aware of the exact pattern of access from the backupapplication. Thus, step 370 stores the list of blocks to be used laterto pace the prefetch algorithm as well as to determine the discardprocess.

As the backup process starts 400, the prefetch API 330 prefetches datain step 410 as determined from the information of step 370, prefetchingthe data for the backup process in step 420. The data is handled inportions of data, examples of which are data blocks, or file systempages. Thus, herein, the terms “portions”, “blocks”, “pages”, “subset”,etc. are interchangeable. The storage system 110 caches the data to bebacked up in step 420 to cache 218 (and to NVS 220 of the other server)and the backup process 320, in step 430, reads the data from cache andbacks up the data to the backup data storage 310. The prefetch API instep 410 monitors the progress of the caching of step 420 and the backupof step 430 and paces the prefetches such that the reads to the backupdata storage 310 can be satisfied from the cached data 218.

In step 440, as soon as the block of data is backed up to the backupdata storage, the data block is marked for an accelerated LRU (leastrecently used) where the block of the data is discarded as soon aspossible in step 450. For example, the block is identified from the listof step 370 as one that is to be discarded, and the identification isplaced in an accelerated LRU list, “marked”, in step 440. This ensuresthat the cache space can be quickly reclaimed in step 450 by the cachingsubsystem 218. Thus, upon backup of each portion of the identified datafrom the cache to the backup data storage, the processor 212 marks thebacked up portion of the identified data for discard from the cache.

Thus, the backed up data is discarded from the cache right away,lessening cache pollution that otherwise would happen since the data wasmost recently accessed and a standard LRU algorithm would not be able todistinguish the fact that the blocks would not be accessed again, thusretaining them longer than their usefulness and causing resource issues.

As blocks are added to the to the accelerated LRU list on first accessin step 440, subsequent files or portions of files as indicated by theprefetch list of step 370 are prefetched in step 410 into cache 218. Thebackup comprises a backup access pattern, and the processor 212additionally prefetches the data blocks of the data storage for thebackup for the caching in the order of the backup access pattern. Thespeed of the prefetch is calculated as a function of the bandwidth tothe underlying storage system 203, 204 and the difference between theaverage disk access latencies versus memory 218 access latencies. Thiswill ensure that the smallest subset of files is prefetched into thecache at any given time. The list of blocs provided by the file systemin step 370 to the underlying storage control 200 thus allows a prefetchof a subset of blocks (a portion may be a block or subset) from physicaldisk to be cached.

The identifying step 370 of the processor 212 additionally comprisesgenerating a list of physical block-level READs of the data stored inthe data storage for the prefetching step 410 and for the marking step440.

A person of ordinary skill in the art will appreciate that theembodiments of the present invention, disclosed herein, including thecomputer-implemented control 200 with processor(s) 212 for providing thebackup of data for the system architecture 100 of FIG. 1, and thefunctionality provided therein, may be embodied as a system, method orcomputer program product. Accordingly, embodiments of the presentinvention may take the form of an entirely hardware embodiment, anentirely software embodiment (including firmware, resident software,micro-code, etc.) or a combination thereof, such as an embodimentcombining software and hardware aspects that may all generally bereferred to herein as a “circuit,” “module” or “system.” Furthermore,embodiments of the present invention may take the form of a computerprogram product embodied in one or more non-transient computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more non-transient computer readable medium(s)may be utilized. The computer readable medium may be a computer readablestorage medium. A computer readable storage medium may be, for example,but not limited to, an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system, apparatus, or device, or any suitablecombination of the foregoing. More specific examples (a non-exhaustivelist) of the computer readable storage medium would include thefollowing: an electrical connection having one or more wires, a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM),an erasable programmable read-only memory (EPROMor Flash memory), an optical fiber, a portable compact disc read-onlymemory (CD-ROM), an optical storage device, a magnetic storage device,or any suitable combination of the foregoing. In the context of thisdocument, a computer readable storage medium may be any tangible mediumthat can contain or store a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for embodiments of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Embodiments of the present invention are described above with referenceto flowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

Those of skill in the art will understand that changes may be made withrespect to the methods discussed above, including changes to theordering of the steps. Further, those of skill in the art willunderstand that differing specific component arrangements may beemployed than those illustrated herein.

While the preferred embodiments of the present invention have beenillustrated in detail, it should be apparent that modifications andadaptations to those embodiments may occur to one skilled in the artwithout departing from the scope of the present invention as set forthin the following claims.

What is claimed is:
 1. A method for backing up data in a data storagesystem comprising primary data storage, cache and backup data storage,the method comprising: identifying data stored in said primary datastorage for backup to said backup data storage; caching portions of saididentified data in said cache; backing up said portions of saididentified data from said cache to said backup data storage; and uponbackup of each said portion of said identified data from said cache tosaid backup data storage, marking said backed up portion of saididentified data for discard from said cache.
 2. The method of claim 1,wherein said marking step comprises marking said identified backed upportions to an accelerated LRU (least recently used) list.
 3. The methodof claim 2, wherein said identifying step identifies an advance subsetof data stored in said data storage for backup.
 4. The method of claim2, wherein said identifying step identifies a complete set of files ofdata stored in said data storage for said backup.
 5. The method of claim2, wherein said backup step and said marking step portions comprise datablocks.
 6. The method of claim 5, wherein said backing up step comprisesa backup access pattern, and additionally comprising the step ofprefetching said blocks of said data storage for said backup for saidcaching in the order of said backup access pattern.
 7. The method ofclaim 6, wherein said identifying step additionally comprises generatinga list of physical READs of said data stored in said data storage forsaid prefetching step and for said marking step.
 8. A data storagesubsystem comprising: primary data storage; cache; backup data storage;and at least one processor configured to identify data stored in saidprimary data storage for backup to said backup data storage, where saididentified data is placed in said cache in the form of portions of saiddata, and where said portions of said data are to be backed up from saidcache to said backup data storage; and upon backup of each said portionof said identified data from said cache to said backup data storage,mark said backed up portion of said identified data for discard fromsaid cache.
 9. The data storage subsystem of claim 8, wherein saidmarking step of said processor comprises marking said identified backedup portions to an accelerated LRU (least recently used) list.
 10. Thedata storage subsystem of claim 9, wherein said identifying step of saidprocessor identifies an advance subset of data stored in said datastorage for backup.
 11. The data storage subsystem of claim 9, whereinsaid identifying step of said processor identifies a complete set offiles of data stored in said data storage for said backup.
 12. The datastorage subsystem of claim 9, wherein said portions of said backup andsaid marking step of said processor comprise data blocks.
 13. The datastorage subsystem of claim 12, wherein said backup comprises a backupaccess pattern, and said processor additionally prefetches said blocksof said data storage for said backup for said caching in the order ofsaid backup access pattern.
 14. The data storage subsystem of claim 13,wherein said identifying step of said processor additionally comprisesgenerating a list of physical READs of said data stored in said datastorage for said prefetching step and for said marking step.
 15. Acomputer program product for storing data with a data storage systemcomprising primary data storage; cache; backup data storage; and atleast one computer-implemented processor, said computer program productcomprising computer-usable storage medium having non-transientcomputer-usable program code embodied therein, said computer-usableprogram code comprising: computer-usable program code for said processorto identify data stored in said primary data storage for backup to saidbackup data storage, where said identified data is placed in said cachein the form of portions of said data, and said portions of said data areto be backed up from said cache to said backup data storage; andcomputer-usable program code for said processor to, upon backup of eachsaid portion of said identified data from said cache to said backup datastorage, mark said backed up portion of said identified data for discardfrom said cache.
 16. The computer program product of claim 15, whereinsaid computer-usable program code for said processor marking stepcomprises code to mark said identified backed up portions to anaccelerated LRU (least recently used) list.
 17. The computer programproduct of claim 16, wherein said computer-usable program code for saidprocessor identifying step comprises code to identify an advance subsetof data stored in said data storage for backup.
 18. The computer programproduct of claim 16, wherein said computer-usable program code for saidprocessor identifying step comprises code to identify a complete set offiles of data stored in said data storage for said backup.
 19. Thecomputer program product of claim 16, wherein said portions of saidbackup and said marking step of said processor comprise data blocks. 20.The computer program product of claim 19, wherein said backup comprisesa backup access pattern, and said computer-usable program code for saidprocessor additionally comprises code to prefetch said blocks of saiddata storage for said backup for said caching in the order of saidbackup access pattern.
 21. The computer program product of claim 20,wherein said computer-usable program code for said processor identifyingstep additionally comprises code to generate a list of physical READs ofsaid data stored in said data storage for said prefetching step and forsaid marking step.